home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol309 / jdutil.arc / ASM.ARC / CONSOLE.ASM < prev    next >
Encoding:
Assembly Source File  |  1986-07-08  |  2.3 KB  |  118 lines

  1.         TITLE   MSDOS CONSOLE I/O ROUTINES
  2.         .XLIST
  3.         INCLUDE ASCII.DEF
  4.         INCLUDE MSDOS2.DEF
  5.         .LIST
  6.  
  7. CODE    SEGMENT BYTE PUBLIC
  8.         ASSUME CS:CODE
  9. EXTRN    UC:NEAR
  10. PUBLIC  COUT,SCIN,CIN,CLRCO,CRLF,ERRORMSG,GETYORN
  11.  
  12. ;       CONSOLE I/O ROUTINES FOR MSDOS
  13.  
  14. ;       COUT = OUTPUT CHARACTER IN AL
  15. ;
  16. COUT    PROC    NEAR
  17.         PUSH    DX
  18.         PUSH    AX
  19.         MOV     DL,AL
  20.         MOV     AH,STD_CON_OUTPUT
  21.         INT     DOS
  22.         POP     AX
  23.         POP     DX
  24.         RET
  25. COUT    ENDP
  26.  
  27. ;       SCIN = SEE IF CONSOLE CHARACTER AVAILABLE
  28. ;       RETURNS 'C'=1 IF NOT AVAILABLE
  29. ;       ELSE RETURNS CHAR. IN AL
  30. ;
  31. SCIN    PROC    NEAR
  32.         MOV     AH,CON_INPUT_STATUS
  33.         INT     DOS
  34.         CMP     AL,0
  35.         JNZ     SHORT GOTSOME
  36.         STC
  37.         RET
  38. GOTSOME:
  39.         CALL    NEAR PTR CIN
  40.         CLC
  41.         RET
  42.  
  43. SCIN    ENDP
  44.  
  45. ;       CIN = GET CHARACTER FROM KEYBOARD
  46. ;       EXIT:  CHAR IN AL
  47. ;
  48. CIN     PROC    NEAR
  49.         MOV     AH,CON_INPUT_NO_ECHO
  50.         INT     DOS
  51.         RET
  52. CIN     ENDP
  53.  
  54. ;       CLRCO = CLEAR TYPE-AHEAD BUFFER
  55. ;
  56. CLRCO   PROC    NEAR
  57. CLRC1:  CALL    SCIN
  58.         JNC     CLRC1
  59.         RET
  60. CLRCO   ENDP
  61.  
  62. ;
  63. ;       CRLF = SEND CR + LF TO CONSOLE
  64. ;
  65. CRLF    PROC    NEAR
  66.         MOV     AL,CR
  67.         CALL    COUT
  68.         MOV     AL,LF
  69.         CALL    COUT
  70.         RET
  71. CRLF    ENDP
  72.  
  73. ;       ERRORMSG = WRITE MESSAGE TO STD. ERROR OUTPUT
  74. ;       ENTRY: DS:DX POINTS TO MSG (ASCIIZ STRING)
  75. ;       USES: AX,DX,FLAGS
  76. ;
  77. ERRORMSG PROC   NEAR
  78.         PUSH    BX
  79.         PUSH    CX
  80. ERRMSG1: XCHG   DX,BX
  81.         MOV     AL,[BX]
  82.         XCHG    DX,BX
  83.         CMP     AL,0
  84.         JZ      ERRMSG2
  85.         MOV     CX,1
  86.         MOV     AH,WRITE
  87.         MOV     BX,2
  88.         INT     DOS
  89.         INC     DX
  90.         JMP     ERRMSG1
  91. ERRMSG2:
  92.         POP     CX
  93.         POP     BX
  94.         RET
  95. ERRORMSG ENDP
  96.  
  97. ; GETYORN = GET 'Y' OR 'N' RESPONSE FROM CONSOLE
  98. ;         RETURNS CHAR. ( Y OR N ) IN AX
  99.  
  100. GETYORN PROC    NEAR
  101.     CALL    CLRCO            ;CLEAR TYPE-AHEAD
  102. NOTYN:    CALL    CIN            ;GET CONSOLE CHAR.
  103.     CALL    UC            ;MAKE UPPER-CASE
  104.     CMP    AL,'Y'
  105.     JE    GOTY
  106.     CMP    AL,'N'
  107.     JNE    NOTYN            ;IF NOT Y OR N
  108. GOTY:    PUSH    AX
  109.     CALL    COUT
  110.     CALL    CRLF
  111.     POP    AX
  112.     MOV    AH,0            ;IN CASE USER DOES WORD COMPARISON
  113.     RET
  114. GETYORN ENDP
  115.  
  116. CODE    ENDS
  117.         END
  118.